import axios from 'axios';
import { ElNotification } from 'element-plus';
import { useUserStore } from "@/stores/modules/user";
const tokenStore =  useUserStore()
// 1. 创建 axios 实例
const service = axios.create({
    // TODO 1. 基础地址跟超时时间
    baseURL: "https://www.demo.com", // 后期我们会把它替换成环境变量
    timeout: 5000 // 请求超时时间
});

// 2. 请求拦截器
service.interceptors.request.use(
    config => {
        
        // TODO 2. 携带token
        const token = tokenStore.token
        console.log("token123",token)
        
        if (token !== null) {
            config.headers["token"] = token;
        }
        return config;
    },
    error => {
        // 请求错误处理
        ElNotification({
            title: 'Error',
            message: 'Request Error: ' + error.message,
            type: 'error',
        });
        return Promise.reject(error);
    }
);

// 3. 响应拦截器
service.interceptors.response.use(
    response => { // 当请求成功,接收一个 AxiosResponse 对象作为参数
        const res = response.data;
        // TODO 3. 处理业务失败
        if (res.code !== 200) { // 根据实际业务修改状态码不是 200 时的逻辑
            ElNotification({
                title: 'Error',
                message: res.message || 'Error',
                type: 'error',
            });
            return Promise.reject(new Error(res.message || 'Error')); // 处理业务失败, 给错误提示，抛出错误
        } else {
            // TODO 4. 摘取核心响应数据
            return res;
        }
    },
    error => {
        ElNotification({
            title: 'Error',
            message: 'Response Error: ' + error.message,
            type: 'error',
        });
        // TODO 5. 处理401错误
        return Promise.reject(error);
    }
);

export default service;
